<?php
	include_once('connexion.php');
?>

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<link rel="stylesheet" href="styles/style.css" />
	<title>Kilbet - The first social betting platform</title>
</head>

<body>
    
<header>
	<?php include('header.php');?>
</header>

<section id="section_contest">
	<div class="center_content">
		<article>
		<?php
		if(isset($userConnected))
		{
			if(isset($_GET['contestid']))
			{
			
				$contest = $contestManager->get((int) $_GET['contestid']);
				//Si le user connecté est admin du concours : affichage des fonctionnalités liées à l'administration d'un concours
				if($userManager->isAdmin($userConnected, $contest))
				{
					
					echo '<h1>'.$contest->name().'</h1>';
					
					if(!isset($_GET['view']))
					{
						echo '<ul>';
							echo '<li><a href="?contestid='.$contest->id().'&view=players">Gestion des participants</a></li>';
							echo '<li>Gestion des paris</li>';
						echo '</ul>';
					}
					else
					{
						echo '<a href="?contestid='.$contest->id().'">Retour à l\'administration du concours</a>';
						if($_GET['view']=="players")
						{
							echo '<h2>Gestion des participants</h2>';
							//Si demande d'inscription validée : on prend en compte la validation et on redirige sur la page d'admin du contest
							if(isset($_GET['action']) && $_GET['action'] == "acceptrequest" && isset($_GET['userid']))
							{
								$userRequesting = $userManager->get((int) $_GET['userid']);
								$statusRequesting = $userManager->getStatusPlayer($userRequesting, $contest);
								if($statusRequesting == 3) $userManager->acceptRequestContest($userConnected, $userRequesting, $contest);
								header('Location: admin_contest.php?contestid='.$contest->id().'&view=players');
							}
							//Si demande d'inscription refusée : on prend en compte le refus et on redirige sur la page d'admin du contest
							if(isset($_GET['action']) && $_GET['action'] == "declinerequest" && isset($_GET['userid']))
							{
								$userRequesting = $userManager->get((int)$_GET['userid']);
								$statusRequesting = $userManager->getStatusPlayer($userRequesting, $contest);
								if($statusRequesting == 3) $userManager->declineRequestContest($userConnected, $userRequesting, $contest);
								header('Location: admin_contest.php?contestid='.$contest->id().'&view=players');
							}
							//Si ban du joueur : on prend en compte le ban et on redirige sur la page d'admin du contest
							if(isset($_GET['action']) && $_GET['action'] == "ban" && isset($_GET['userid']))
							{
								$userBanned = $userManager->get((int)$_GET['userid']);
								$statusBanning = $userManager->getStatusPlayer($userBanned, $contest);
								if($statusBanning == 1) $userManager->banFromContest($userConnected, $userBanned, $contest);
								header('Location: admin_contest.php?contestid='.$contest->id().'&view=players');
							}
							//Si invitation du joueur par l'admin : on prend en compte l'invitation et on redirige sur la page d'admin du contest
							if(isset($_GET['action']) && $_GET['action'] == "invitecontest" && isset($_GET['userid']))
							{
								$userInvited = $userManager->get((int)$_GET['userid']);
								$statusInvited = $userManager->getStatusPlayer($userInvited, $contest);
								if($statusInvited == 0 || $statusInvited == 6) $userManager->inviteContest($userConnected, $userInvited, $contest);
								header('Location: admin_contest.php?contestid='.$contest->id().'&view=players');
							}
							//Si promotion du joueur en tant qu'admin par le créateur : on modifie en BDD et on redirige sur la page d'admin du contest
							if(isset($_GET['action']) && $_GET['action'] == "promoteAdmin" && isset($_GET['userid']))
							{
								$userPromoted = $userManager->get((int)$_GET['userid']);
								$statusPromoted = $userManager->getStatusPlayer($userPromoted, $contest);
								if($statusPromoted == 1) $userManager->promoteAsAdmin($userConnected, $userPromoted, $contest);
								header('Location: admin_contest.php?contestid='.$contest->id().'&view=players');
							}
							//Si rétrogradation de l'admin en tant que joueur par le créateur : on modifie en BDD et on redirige sur la page d'admin du contest
							if(isset($_GET['action']) && $_GET['action'] == "demoteAdmin" && isset($_GET['userid']))
							{
								$userDemoted = $userManager->get((int)$_GET['userid']);
								$statusDemoted = $userManager->getStatusPlayer($userDemoted, $contest);
								if($statusDemoted == 1) $userManager->demoteAdmin($userConnected, $userDemoted, $contest);
								header('Location: admin_contest.php?contestid='.$contest->id().'&view=players');
							}

							//Tableau récapitulatif des joueurs participant à ce concours ou en attente
							echo '<table>';
								echo '<tr>';
									echo
									'<th>Joueur</th>
									<th>Créateur</th>
									<th>Admin</th>
									<th>Statut participation</th>
									<th>Invité par</th>
									<th>Date invitation</th>
									<th>Date refus invitation</th>
									<th>Date demande</th>
									<th>Date participation</th>
									<th>Date refus participation</th>
									<th>Date exclusion</th>
									<th>Action</th>'
									;
								echo '</tr>';
								$listPlayers = $contestManager->getListPlayers($contest);
								foreach($listPlayers as $player)
								{
									echo
									'<tr>
										<td><a href="profile.php?userid='.$player->id().'" alt="Consulter profil">'.$player->login().'</a></td>
										<td>'.$userManager->isCreator($player, $contest).'</td>
										<td>'.$userManager->isAdmin($player, $contest).'</td>
										<td>'.$statusParticipationManager->get((int) $userManager->getStatusPlayer($player, $contest))->name().'</td>
										';
										$invited = $userManager->invited($player, $contest);	
										//Affichage de la personne qui a invité le joueur s'il a bien été invité au concours
										if($invited != null) echo '<td>'.$userManager->get((int) $invited['invitedBy'])->login().'</td>';
										else echo '<td></td>';
										//Affichage de la date d'invitation si le joueur a été invité au concours
										echo '<td>'.$invited['dateInvitation'].'</td>';
										//Affichage de la date d'invitation si le joueur a été invité au concours
										echo '<td>'.$userManager->refusedInvitation($player, $contest).'</td>';
										//Affichage de la date à laquelle la demande d'approbation a été envoyée à l'admin du concours (suite à validation invitation ou demande spontanée du joueur)
										echo '<td>'.$userManager->requested($player, $contest).'</td>';
										//Affichage de la date à laquelle la demande de participation a été acceptée par l'admin
										echo '<td>'.$userManager->plays($player, $contest).'</td>';
										//Affichage de la date à laquelle l'admin a refusé l'inscription du joueur
										echo '<td>'.$userManager->refusedRequestByAdmin($player, $contest).'</td>';
										//Affichage de la date à laquelle le joueur a été banni du concours par l'admin
										echo '<td>'.$userManager->banned($player, $contest).'</td>';
										echo '<td>';
										switch($userManager->getStatusPlayer($player, $contest)){
											case 1:
												if(!($userManager->isAdmin($player, $contest)))
												{
													if($userManager->isCreator($userConnected, $contest)) echo '<a href="?contestid='.$contest->id().'&view=players&action=promoteAdmin&userid='.$player->id().'" alt="Promouvoir en admin du concours">Promouvoir admin</a><br />';
													echo '<a href="?contestid='.$contest->id().'&view=players&action=ban&userid='.$player->id().'" alt="Bannir ce joueur du concours">Exclure</a>';
												}
												else
												{
													if($userManager->isCreator($userConnected, $contest) && !$userManager->isCreator($player, $contest)) echo '<a href="?contestid='.$contest->id().'&view=players&action=demoteAdmin&userid='.$player->id().'" alt="Rétrograder admin en joueur">Rétrograder admin</a><br />';
												}
												break;
											case 2:
												break;
											case 3:
												echo '<a href="?contestid='.$contest->id().'&view=players&action=acceptrequest&userid='.$player->id().'" alt="Accepter demande">Accepter</a></br>';
												echo '<a href="?contestid='.$contest->id().'&view=players&action=declinerequest&userid='.$player->id().'" alt="Refuser demande">Refuser</a></br>';
												break;
										}
										echo '</td>';
									echo '</tr>';	
								}
							echo '</table>';
							echo '</br>';
							include_once('search_user.php');
						}
					}
					
				}
				//Si le user connecté n'est pas admin du concours : redirection vers la page du concours
				else
				{
					header('Location: contest.php?contestid='.$contest->id());
				}
			}
			//Si pas de contestid renseigné dans l'URL : on redirige vers la page listcontest
			else
			{
				header('Location: listcontest.php');
			}
		}
		//Si pas de user connecté : on redirige vers la page d'accueil car il faut être connecté pour consulter un concours
		else header('Location: index.php');
		?>
		</article>
	</div>
</section>

<footer>
	<?php include_once('footer.php');?>
</footer>
	
	
</body>
</html>